﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Encapsulation_classwork
{
    class Bank
    {
        private List<Account> accounts;
        private int accountCounter = 1;
        private string bankName;

        public Bank()
        {
            accounts = new List<Account>();
        }

        public Bank(string bankName)
            :base()
        {
            this.bankName = bankName;
        }

        public Account CreateAccount()
        {
            //Console.WriteLine("Пожалуйста, внесите сумму для открытия счёта");
            Account account = new Account(accountCounter);
            accountCounter++;
            accounts.Add(account);
            return account;
        }

        public bool FindAndDeleteAccount(int accountId)
        {
            for (int i = 0; i < accounts.Count; i++)
            {
                if (accountId == accounts[i].accountId)
                {
                    ShutUpAndTakeMyMoney(accounts[i].accountId);
                    accounts.Remove(accounts[i]);
                    return true;
                }
            }
            return false;
        }
        public bool ShutUpAndTakeMyMoney(int accountId, decimal money)
        {
            for (int i = 0; i < accounts.Count; i++)
            {
                if (accountId == accounts[i].accountId)
                {
                    if (accounts[i].money == 0)
                    {
                        Console.WriteLine("На счету отсутствуют средства.");
                    }
                    else
                    {
                        if (money < accounts[i].money)
                        {
                            Console.WriteLine("Со счёта получено {0}грн.", money);
                            accounts[i].ReduceMoney(money);
                            Console.WriteLine("Текущий баланс - {0}грн", accounts[i].money);
                        }
                        else
                        {
                            Console.WriteLine("На счету недоcтаточно средств.");
                        }
                    }
                    return true;
                }
            }
            return false;
        }
        public bool ShutUpAndTakeMyMoney (int accountId)
        {
            for (int i = 0; i < accounts.Count; i++)
            {
                if (accountId == accounts[i].accountId)
                {
                    if (accounts[i].money == 0)
                    {
                        Console.WriteLine("На счету отсутствуют средства.");
                    }
                    else
                    {
                        Console.WriteLine("Со счёта получено {0}грн.", accounts[i].money);
                        accounts[i].SetZeroMoney();
                        Console.WriteLine("Текущий баланс - {0}грн", accounts[i].money);
                    }
                    return true;

                }
            }
            return false;
        }
        
        public bool DepositMoney (int accountId, decimal money)
        {
            for (int i = 0; i < accounts.Count; i++)
            {
                if (accountId == accounts[i].accountId)
                {
                    accounts[i].AddMoney(money);
                    Console.WriteLine("Ваш счёт был пополнен на {0}грн. Текущий баланс - {1}грн.", money, accounts[i].money);
                    return true;
                }
            }
            return false;
        }
        public bool PrintAccountCash (int accountId)
        {
            for (int i = 0; i < accounts.Count; i++)
            {
                if (accountId == accounts[i].accountId)
                {
                    Console.WriteLine("Текущий баланс - {0}грн.", accounts[i].money);
                    return true;
                }
            }
            return false;
        }
    }
}
